{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "\n",
    "matplotlib.rcParams['font.sans-serif'] = ['SimHei']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "data": {
      "text/plain": "   城市A人口数量  城市A小吃店利润\n0   6.1101   17.5920\n1   5.5277    9.1302\n2   8.5186   13.6620\n3   7.0032   11.8540\n4   5.8598    6.8233",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>城市A人口数量</th>\n      <th>城市A小吃店利润</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>6.1101</td>\n      <td>17.5920</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>5.5277</td>\n      <td>9.1302</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>8.5186</td>\n      <td>13.6620</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>7.0032</td>\n      <td>11.8540</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>5.8598</td>\n      <td>6.8233</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./ex1data1.txt', header=None)\n",
    "df.rename(columns={0: '城市A人口数量', 1: '城市A小吃店利润'}, inplace=True)\n",
    "df.head()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "         城市A人口数量   城市A小吃店利润\ncount  97.000000  97.000000\nmean    8.159800   5.839135\nstd     3.869884   5.510262\nmin     5.026900  -2.680700\n25%     5.707700   1.986900\n50%     6.589400   4.562300\n75%     8.578100   7.046700\nmax    22.203000  24.147000",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>城市A人口数量</th>\n      <th>城市A小吃店利润</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>97.000000</td>\n      <td>97.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>8.159800</td>\n      <td>5.839135</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>3.869884</td>\n      <td>5.510262</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>5.026900</td>\n      <td>-2.680700</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>5.707700</td>\n      <td>1.986900</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>6.589400</td>\n      <td>4.562300</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>8.578100</td>\n      <td>7.046700</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>22.203000</td>\n      <td>24.147000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(df['城市A人口数量'], df['城市A小吃店利润'])\n",
    "\n",
    "plt.title('根据城市人口数量预测该城市小吃店的利润')\n",
    "plt.xlabel('城市人口数量')\n",
    "plt.ylabel('城市小吃店利润')\n",
    "\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "def computeCost(x, y, theta):\n",
    "    inner = np.sum(np.power((x * theta - y), 2))\n",
    "    return inner / (2 * len(x))  # theta是指参数"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "   ones  城市A人口数量  城市A小吃店利润\n0     1   6.1101   17.5920\n1     1   5.5277    9.1302\n2     1   8.5186   13.6620\n3     1   7.0032   11.8540\n4     1   5.8598    6.8233",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ones</th>\n      <th>城市A人口数量</th>\n      <th>城市A小吃店利润</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>6.1101</td>\n      <td>17.5920</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>5.5277</td>\n      <td>9.1302</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1</td>\n      <td>8.5186</td>\n      <td>13.6620</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1</td>\n      <td>7.0032</td>\n      <td>11.8540</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1</td>\n      <td>5.8598</td>\n      <td>6.8233</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.insert(0,'ones',1)\n",
    "df.head()"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
